#include <reg52.h>
#include <intrins.h>

sbit LED = P0^0;
sbit LED2 = P2^0;
sbit LED3 = P2^1;
sbit LED4 = P2^2;
sbit LED5 = P2^3;

sbit LED6 = P2^4;
sbit LED7 = P2^5;
sbit LED8 = P2^6;
sbit LED9 = P2^7;


unsigned int count = 0; // 中断计数器
bit led_status = 0;    // LED 状态标志位

/***************************
  定时器 T0 初始化函数
***************************/
void Timer0_Init() {
    TMOD |= 0x01;       // 设置 T0 为模式1（16位定时器）
    TH0 = 0x4C;         // 定时初值高字节（50ms 定时）
    TL0 = 0x00;         // 定时初值低字节
    ET0 = 1;            // 允许 T0 中断
    TR0 = 1;            // 启动 T0
    EA = 1;             // 开启总中断
}

/***************************
  T0 中断服务函数
***************************/
void Timer0_ISR() interrupt 1 {
    TH0 = 0x4C;         // 重装初值高字节
    TL0 = 0x00;         // 重装初值低字节
    count++;             // 中断计数器+1

    if(count >= 20) {   // 60次中断 = 3秒（50ms * 60）
        count = 0;
        led_status = !led_status; // 切换LED状态
        LED4 = led_status;         // 更新LED
    }
}

void Delay500ms(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

	_nop_();
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}



void main()
{
	LED4 = 0;
	Timer0_Init();     // 初始化定时器
	while (1)
	{
		/* code */
		LED = 0;
		LED2 = 0;

		Delay500ms();
		LED3 = 0;
		Delay500ms();
		LED3 = 1;

		
		Delay500ms();
		LED9 = 0;
		Delay500ms();
		LED9 = 1;
		
	}
	
}